package cn.xinfei.xdecision.common.service.component.decisiontable;

import cn.xinfei.xdecision.common.model.common.PageResult;
import cn.xinfei.xdecision.common.model.common.ResponseEntityDto;
import cn.xinfei.xdecision.common.model.component.CopyToFolderReqVo;
import cn.xinfei.xdecision.common.model.component.decisiontable.DecisionTables;
import cn.xinfei.xdecision.common.model.component.decisiontable.vo.DecisionTablesVo;
import cn.xinfei.xdecision.common.model.component.request.ListParam;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (DecisionTables)表服务接口
 */
public interface DecisionTablesService extends IService<DecisionTables> {

    /**
     * 通过规则id查询全部信息（规则+版本信息）
     */
    DecisionTablesVo queryById(Long id);

    /**
     * 通过规则id查询全部信息（规则+版本信息+明细）
     */
    DecisionTablesVo queryDetailsById(Long id);

    /**
     * 按条件查询指定文件夹下的决策表列表
     */
    ResponseEntityDto<PageResult<List<DecisionTablesVo>, DecisionTables>> queryByEntity(ListParam listParam);

    Long checkAndSaveTables(DecisionTablesVo decisionTablesVo);

    /**
     * 保存版本及详情信息
     */
    void saveDecisionTables(DecisionTablesVo decisionTablesVo);

    boolean updateParent(List<Long> ids, Long folderId);

    List<String> queryFieldEnByDecisionTablesVersionId(Long decisionTablesId);

    public DecisionTablesVo queryByVersionId(String decisionTableCode,long versionNo) ;
    // runner
    DecisionTablesVo queryByVersionId(Long id);


    /**
     * 修改规则
     */
    void updateDecisionTables(List<Long> ids, Integer status, String errorMsg);

    /**
     * 复制规则
     */
    void copyDecisionTables(CopyToFolderReqVo req);

    List<Long> queryByFolderId(@Param("folderId") Long folderId);

    void logicalDelete(List<Long> ids);
}
